﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once

#include "ElementId.h"
#include "GcmpDbCommonEdit.h"

namespace gcmp
{
    class IDocument;
    class Vector3d;
    class ILine3d;

    /// \brief 弧形阵列工具类
    class GCMP_DB_COMMON_EDIT_EXPORT RadialArrayUtils
    {
    public:
        /// \brief 对指定的Element数组，按照弧形阵列的方式进行拷贝复制
        /// 
        /// \param pDocument 当前文档
        /// \param elementIds 执行弧形阵列的Element
        /// \param pLine3d 线段的起点为弧形阵列的旋转中心，线段的方向为旋转轴方向。pLine3d不能为空，否则会报错。
        /// \param angleInRadian 弧形阵列角度,两个Element之间的角度
        /// \param arrayCount 弧形阵列个数
        /// \return 返回所有新生成的Element的id
        static std::vector<ElementId> CreateRadialArrayElements(IDocument* pDocument, 
            const std::vector<ElementId>& elementIds,  
            const ILine3d* pLine3d,
            double angleInRadian,
            int arrayCount);
    };
}